logo

Spring Boot @ResponseBody - Creating Controller Return Values to Response Body

Author: SAI K

In this short article, we will learn how to use Spring Boot @ResponseBody annotation in a controller to write data to the body of the response object. We create a Spring Boot RESTful application to demonstrate the annotation.

Spring @ResponseBody

@ResponseBody is a Spring annotation which binds a method return value to the web response body. It is not interpreted as a view name. It uses HTTP Message converters to convert the return value to HTTP response body, based on the content-type in the request HTTP header.

Here is a sample code snippet:

 @ResponseBody
    @GetMapping(path = "/users")
    public List home() {
        return Arrays.asList(new User(1, "Ramesh"), 
          new User(2, "Prabhas"), 
          new User(3, "John"),
          new User(4, "Tony"),
          new User(4, "Tom"));
    }

Spring Boot @ResponseBody Annotation Example

The following example creates a Spring Boot web application that returns JSON data to the client.

Development Steps

  1. Create a Spring Boot Application
  2. Project Structure
  3. Pom Dependencies
  4. Java Bean - User.java
  5. Create REST Controller - UserController.java
  6. Run Application - Application.java

1. Create a Spring Boot Application

There are many ways to create a Spring Boot application. You can refer below articles to create a Spring Boot application.

>> Create Spring Boot Project With Spring Initializer
>> Create Spring Boot Project in Spring Tool Suite [STS]

Refer project structure or packaging structure in the next step.


2. Project Structure

This is the project structure of the Spring Boot application that we are going to create -

logo

3. Pom Dependencies

This is the Maven build file. The spring-boot-starter-web is a starter for building web applications using Spring MVC. It uses Tomcat as the default embedded container.

<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath />
        <!-- lookup parent from repository -->
    </parent>
    <groupId>net.javaguides.springboot</groupId>
    <artifactId>springboot-annotations-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-annotations-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

4. Java Bean - User.java

Let's create a representation class which we use to return in JSON format:

package net.javaguides.springboot;

public class User {

    private Integer id;
    private String name;

    public User() {}

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

5. Create REST Controller - UserController.java

Let's create a simple UserController with users rest API which returns a list of users in JSON format.

package net.javaguides.springboot;

import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {

    @ResponseBody
    @GetMapping(path = "/users")
    public List < User > home() {
               return Arrays.asList(new User(1, "Ramesh"),
                                    new User(2, "Prabhas"),
                                    new User(3, "John"),
                                    new User(4, "Tony"),
                                    new User(4, "Tom"));
        }
}

6. Run Application - Application.java

Application is the entry point that sets up the Spring Boot application. The @SpringBootApplication annotation enables auto-configuration and component scanning.

Let's run this Spring boot application from either Eclipse IDE by right click - Run As - Java Application.

Or you can use the below maven command to run:

mvn spring-boot:run

7. Testing from Browser

Hit this URL in a browser - http://localhost:8080/users

logo

Related Spring and Spring Boot Tutorials/Guides: